package it.apiconsulting.live.view;

import it.apiconsulting.live.controller.CategoriaManager;
import it.apiconsulting.live.controller.ProdottoManager;
import it.apiconsulting.live.controller.SottoCategoriaManager;
import it.apiconsulting.live.model.Categoria;
import it.apiconsulting.live.model.Prodotto;
import it.apiconsulting.live.model.SottoCategoria;

import java.util.ArrayList;
import java.util.List;


public class ProdottoAction extends BaseAction {

	private static final long serialVersionUID = 9149826260758390091L;
	private Prodotto prodotto;
	private List<Prodotto> prodotti;
	private String id;
	
	private List<Categoria> categorie;
	private List<SottoCategoria> sottoCategorie;
	
	private ProdottoManager linkProdottoController;
	private CategoriaManager linkCategoriaController;
	private SottoCategoriaManager linkSottoCategoriaController;

	public ProdottoAction() {
		linkProdottoController = new ProdottoManager();
		linkCategoriaController = new CategoriaManager();
		linkSottoCategoriaController = new SottoCategoriaManager();
		function = "Prodotto";
	}

	public String execute() {
		
		this.prodotti = linkProdottoController.list();
		this.categorie = linkCategoriaController.list();
		if (this.sottoCategorie == null) {
			this.sottoCategorie = new ArrayList<SottoCategoria>();
		}
		return SUCCESS;
	}
	
	public String add() {
		this.sottoCategorie = new ArrayList<SottoCategoria>();
		if (!getProdotto().getIdcategoria().equals(new Long(-1)) && getProdotto().getIdsottocategoria().equals(new Long(-1)) ) {
			this.sottoCategorie = linkSottoCategoriaController.listByIdCategoria(getProdotto().getIdcategoria());
			return "input";
		} else if (!getProdotto().getIdcategoria().equals(new Long(-1)) && !getProdotto().getIdsottocategoria().equals(new Long(-1)) ) {
			System.out.println(getProdotto());
			try {
				
				if ( linkProdottoController.getProductById(Long.parseLong(getId())) != null ) {
					getProdotto().setId(Long.parseLong(getId()));
					linkProdottoController.update(getProdotto());
				} else linkProdottoController.add(getProdotto());
			} catch (Exception e) {
				e.printStackTrace();
			}
			this.prodotti = linkProdottoController.list();	
		}
		return SUCCESS;
	}

	public String delete() {
		linkProdottoController.delete(Long.parseLong(getId()));
		return SUCCESS;
	}
	
	public String edit() {
		setProdotto(linkProdottoController.getProductById(Long.parseLong(getId())));
		this.sottoCategorie = linkSottoCategoriaController.listByIdCategoria(this.prodotto.getIdcategoria());
		return SUCCESS;
	}

	public Prodotto getProdotto() {
		return prodotto;
	}

	public List<Prodotto> getProdotti() {
		return prodotti;
	}

	public void setProdotto(Prodotto prodotto) {
		this.prodotto = prodotto;
	}

	public void setProdotti(List<Prodotto> prodotti) {
		this.prodotti = prodotti;
	}

	public List<Categoria> getCategorie() {
		return categorie;
	}

	public void setCategorie(List<Categoria> categorie) {
		this.categorie = categorie;
	}

	public List<SottoCategoria> getSottoCategorie() {
		return sottoCategorie;
	}

	public void setSottoCategorie(List<SottoCategoria> sottoCategorie) {
		this.sottoCategorie = sottoCategorie;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}
